package com.cykj.util;

import com.cykj.pojo.CyMenu;

import java.util.ArrayList;
import java.util.List;

/**
 * 构建树形菜单工具类
 */
public class TreeMenuUtils {
    public static List<CyMenu> build(List<CyMenu> allMenu){
        ArrayList<CyMenu> menuData = new ArrayList<CyMenu>();

        for (CyMenu menu : allMenu) {
            //如果等于0说明是一级菜单
            if (menu.getMenuParentId() == 0){
                //把一级菜单传过去，把所有的菜单传过去，让一级菜单去找对应的子级菜单
                menuData.add(getChildrenMenu(menu,allMenu));
            }
        }
        return menuData;
    }

    public static CyMenu getChildrenMenu(CyMenu nowCyMenu,List<CyMenu> allMenu){
        //当前的父级菜单nowCyMenu 和 所有的菜单
        for (CyMenu menu : allMenu) {
            //如果当前的父级菜单的id等于子级菜单的父id，说明是它的子级，然后不断判断和添加
            if (nowCyMenu.getMenuId() == menu.getMenuParentId()){
                nowCyMenu.getChildren(  ).add(getChildrenMenu(menu,allMenu));
            }
        }
        //最后返回一个一级菜单以及它全部的子孙后代
        return nowCyMenu;
    }
}
